1139D - Steps to One - CodeForces Solution


dp math number theory probabilities *2300

Please click on ads to support us..

C++ Code:

#include <bits/stdc++.h>
using namespace std;

#define int long long int
const int max_n =1e5, mod = 1e9 + 7;

int pw(int a, int b) {
    if (b == 0)
        return 1;
    int k = pw(a, b / 2);
    if (b % 2 == 0)
        return ((k * k) % mod);
    return k * k % mod * a % mod;
}

int dp[max_n + 10], m, ans = 1;

int32_t main() {
    cin >> m;
    for (int i = 2; i <= m; i++){
        int p = (m / i) * pw(m, mod - 2) % mod;
        dp[i] = p * pw((1 - p + mod) % mod, mod - 2) % mod;
    }

    for (int i = m; i >= 2; i--)
        for (int j = 2 * i; j <= m; j += i)
            dp[i] = ((dp[i] - dp[j]) % mod + mod) % mod;
        
    for (int i = 2; i <= m; i++) 
        ans = (ans + dp[i]) % mod;
    
    cout << ans;
}


Comments

Submit
0 Comments
More Questions

688B - Lovely Palindromes
66B - Petya and Countryside
1557B - Moamen and k-subarrays
540A - Combination Lock
1553C - Penalty
1474E - What Is It
1335B - Construct the String
1004B - Sonya and Exhibition
1397A - Juggling Letters
985C - Liebig's Barrels
115A - Party
746B - Decoding
1424G - Years
1663A - Who Tested
1073B - Vasya and Books
195B - After Training
455A - Boredom
1099A - Snowball
1651D - Nearest Excluded Points
599A - Patrick and Shopping
237A - Free Cash
1615B - And It's Non-Zero
1619E - MEX and Increments
34B - Sale
1436A - Reorder
1363C - Game On Leaves
1373C - Pluses and Minuses
1173B - Nauuo and Chess
318B - Strings of Power
1625A - Ancient Civilization